53 research outputs found
Technical Debt Prioritization: State of the Art. A Systematic Literature Review
Background. Software companies need to manage and refactor Technical Debt
issues. Therefore, it is necessary to understand if and when refactoring
Technical Debt should be prioritized with respect to developing features or
fixing bugs. Objective. The goal of this study is to investigate the existing
body of knowledge in software engineering to understand what Technical Debt
prioritization approaches have been proposed in research and industry. Method.
We conducted a Systematic Literature Review among 384 unique papers published
until 2018, following a consolidated methodology applied in Software
Engineering. We included 38 primary studies. Results. Different approaches have
been proposed for Technical Debt prioritization, all having different goals and
optimizing on different criteria. The proposed measures capture only a small
part of the plethora of factors used to prioritize Technical Debt qualitatively
in practice. We report an impact map of such factors. However, there is a lack
of empirical and validated set of tools. Conclusion. We observed that technical
Debt prioritization research is preliminary and there is no consensus on what
are the important factors and how to measure them. Consequently, we cannot
consider current research conclusive and in this paper, we outline different
directions for necessary future investigations
A Study on Architectural Smells Prediction
Architectural smells can be detrimental to the system maintainability, evolvability and represent a source of architectural debt. Thus, it is very important to be able to understand how they evolved in the past and to predict their future evolution. In this paper, we evaluate if the existence of architectural smells in the past versions of a project can be used to predict their presence in the future. We analyzed four Java projects in 295 Github releases and we applied for the prediction four different supervised learning models in a repeated cross-validation setting. We found that historical architectural smell information can be used to predict the presence of architectural smells in the future. Hence, practitioners should carefully monitor the evolution of architectural smells and take preventative actions to avoid introducing them and stave off their progressive growth.</p
On the relation between architectural smells and source code changes
Although architectural smells are one of the most studied type of architectural technical debt, their impact on maintenance effort has not been thoroughly investigated. Studying this impact would help to understand how much technical debt interest is being paid due to the existence of architecture smells and how this interest can be calculated. This work is a first attempt to address this issue by investigating the relation between architecture smells and source code changes. Specifically, we study whether the frequency and size of changes are correlated with the presence of a selected set of architectural smells. We detect architectural smells using the Arcan tool, which detects architectural smells by building a dependency graph of the system analyzed and then looking for the typical structures of the architectural smells. The findings, based on a case study of 31 open-source Java systems, show that 87% of the analyzed commits present more changes in artifacts with at least one smell, and the likelihood of changing increases with the number of smells. Moreover, there is also evidence to confirm that change frequency increases after the introduction of a smell and that the size of changes is also larger in smelly artifacts. These findings hold true especially in Medium–Large and Large artifacts
The perception of Architectural Smells in Industrial Practice
Architectural Technical Debt (ATD) is considered as the most significant type
of TD in industrial practice. In this study, we interview 21 software engineers
and architects to investigate a specific type of ATD, namely architectural
smells (AS). Our goal is to understand the phenomenon of AS better and support
practitioners to better manage it and researchers to offer relevant support.
The findings of this study provide insights on how practitioners perceive AS
and how they introduce them, the maintenance and evolution issues they
experienced and associated to the presence of AS, and what practices and tools
they adopt to manage AS.Comment: Submitted and accepted to IEEE Software special issue on Technical
Debt. This is a preprin
Architecture Smells vs. Concurrency Bugs: an Exploratory Study and Negative Results
Technical debt occurs in many different forms across software artifacts. One
such form is connected to software architectures where debt emerges in the form
of structural anti-patterns across architecture elements, namely, architecture
smells. As defined in the literature, ``Architecture smells are recurrent
architectural decisions that negatively impact internal system quality", thus
increasing technical debt. In this paper, we aim at exploring whether there
exist manifestations of architectural technical debt beyond decreased code or
architectural quality, namely, whether there is a relation between architecture
smells (which primarily reflect structural characteristics) and the occurrence
of concurrency bugs (which primarily manifest at runtime). We study 125
releases of 5 large data-intensive software systems to reveal that (1) several
architecture smells may in fact indicate the presence of concurrency problems
likely to manifest at runtime but (2) smells are not correlated with
concurrency in general -- rather, for specific concurrency bugs they must be
combined with an accompanying articulation of specific project characteristics
such as project distribution. As an example, a cyclic dependency could be
present in the code, but the specific execution-flow could be never executed at
runtime
model driven reverse engineering approaches a systematic literature review
This paper explores and describes the state of the art for what concerns the model-driven approaches proposed in the literature to support reverse engineering. We conducted a systematic literature review on this topic with the aim to answer three research questions. We focus on various solutions developed for model-driven reverse engineering, outlining in particular the models they use and the transformations applied to the models. We also consider the tools used for model definition, extraction, and transformation and the level of automation reached by the available tools. The model-driven reverse engineering approaches are also analyzed based on various features such as genericity, extensibility, automation of the reverse engineering process, and coverage of the full or partial source artifacts. We describe in detail and compare fifteen approaches applying model-driven reverse engineering. Based on this analysis, we identify and indicate some hints on choosing a model-driven reverse engineering approach from the available ones, and we outline open issues concerning the model-driven reverse engineering approaches
- …